#include <dos.h>
int int86(intno,inregs,outregs);
int ntno; номер (число) прерывания зна-
union REGS *inregs; чения регистров при вызове
union REGS *outregs; значения регистров при воз-
врате
Описание.
Функция int86 выполняет прерывание 8086 программного обеспечения, которое определено номером прерывания intno . Перед выполнением прерывания int86 копирует содержимое inregs в соответствующие регистры. После возврата прерывания функция копирует значение текущего регистра в outregs . Она также копирует статус переносимого флага системы в поле cflag , содержащееся в outregs.
Аргументы inregs и outregs являются объединениями типа REGS . Тип бъединения объявлен в include -файле <dos.h>. Использование функции int86 предназначено для вызовов прерываний DOS.
Возвращаемое значение.
Возвращаемым значением является значение в регистре AX после возврата прерывания. Если поле cflag в outregs ненулевое, возникает ошибка и переменная _doserrno также устанавливает соответствующий код ошибки.
Пример:
#include <signal.h>
#include <dos.h>
#include <stdio.h>
#include <process.h>
/* прерывание номер 0х23, подхватываемое процедурой обра-
ботки прерываний int_handler. Замечание: Значения в структуре
regs не имеют смысла для этого прерывания. */
#define CNTRL_C 0x23
int int_handler(int);
union REGS rregsr;
.
.
.
signal (SIGINT, int_handler);
.
.
.
int86 (CNTRL_C, &rregsr, &rregsr);